/*
 * 文件名：BaseModel.java 版权：Copyright by AltonSoftware 描述： 修改人：Administrator 修改时间：2014年11月18日 修改内容：
 */

package com.etc.common.model;

import java.io.Serializable;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

/**
 * 所有model类的超级类 重写toString方法，方法中包含该bean类的所有字段及其对应值
 * 
 * @author zhangliang
 * @version 2014年11月18日
 * @see BaseModel
 * @since
 */

public abstract class BaseModel implements Serializable {

	private int pageSize;
	
	private int pageNo;
	
	public int getPageSize() {
		return pageSize;
	}

	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}

	public int getPageNo() {
		return pageNo;
	}

	public void setPageNo(int pageNo) {
		this.pageNo = pageNo;
	}

	/**
	 * 
	 */
	private static final long serialVersionUID = -8952333320999172350L;

	@Override
	public String toString() {
		super.toString();
		StringBuffer res = new StringBuffer();
		Class<?> clazz = this.getClass();
		res.append(clazz.getName() + ":");
		// 获取当前类的所有公共属性
		Field[] fields = clazz.getDeclaredFields();
		for (Field field : fields) {
			if (field.getModifiers() == 2) {
				String fieldName = field.getName();
				String methodName = "get" + fieldName.substring(0, 1).toUpperCase()
						+ fieldName.substring(1);
				res.append(fieldName + ":");
				try {
					Method getMethod = clazz.getMethod(methodName);
					Object getValue = getMethod.invoke(this);
					if (null != getValue) {
						res.append(getValue.toString());
					} else {
						res.append("");
					}
				} catch (NoSuchMethodException e) {
					e.printStackTrace();
				} catch (SecurityException e) {
					e.printStackTrace();
				} catch (IllegalAccessException e) {
					e.printStackTrace();
				} catch (IllegalArgumentException e) {
					e.printStackTrace();
				} catch (InvocationTargetException e) {
					e.printStackTrace();
				}
				res.append(";");
			}

		}

		return res.toString();
	}

}
